Communication network multiplexer grooming optimization

ABSTRACT

Aspects of optimized grooming of multiplexers of a communication network are presented. In an example method, an optimization value associated with each of a plurality of multiplexer configurations may be determined, wherein each of the plurality of multiplexer configurations includes a proposed assignment of each of a plurality of data channels to one of a plurality of inputs of a plurality of multiplexers. A multiplexer configuration having a highest-ranked optimization value of the plurality of multiplexer configurations may be identified and subsequently used to configure the multiplexers. Other potential aspects of the present disclosure are described in greater detail below.

This application is a continuation of and claims priority to U.S.application Ser. No. 15/154,634 entitled “Communication NetworkMultiplexer Grooming Optimization,” filed May 13, 2016 which is acontinuation of U.S. application Ser. No. 14/711,007 entitled“Communication Network Multiplexer Grooming Optimization,” filed on May13, 2015, now abandoned, both of which are hereby incorporated byreference in their entirety.

TECHNICAL FIELD Background

Large communication networks, including networks that carry both voiceand data traffic, typically are implemented using a complex arrangementof devices, such as, for example, hubs, switches, gateways, routers,multiplexers and/or demultiplexers, servers, and so on. Network serviceproviders or operators typically lease or purchase at least some ofthese components to provide their customers access to one or morecommunication networks. As with most businesses, the amount of profitthat may be realized by network service providers or operators isdetermined to a great extent by the costs incurred in providing thatservice. Such costs, in turn, are governed significantly by howefficiently those purchased or leased assets are being employed.

For example, a network multiplexer generally receives multiple datachannels of incoming data and directs them onto a single output line orchannel for transmission over a communication network or portionthereof, such as, for example, a wide area network (WAN) or backbonenetwork. The more efficiently an operator utilizes each multiplexer interms of its available data throughput, the fewer the overall number ofmultiplexers that may be employed to provide an acceptable or desiredlevel of service to customers.

While determining the overall data throughput that is required toservice a customer base may appear trivial at first glance, such a taskis complicated, for example, by temporal changes to the customer base,as well as costs associated with making modifications to network assetsin response to those changes. For example, due to a decrease in a numberof customers being serviced, the traffic carried by two multiplexers maybe reduced to the point that the data traffic carried by bothmultiplexers may be serviced solely by one of the two multiplexers, thusallowing the other multiplexer to be sold or otherwise released. Such anoperation is often termed “grooming” of the network, the multiplexers,or the data traffic. However, such grooming also may be associated withcertain types of costs, such as early termination fees of a leasedmultiplexer being removed, planning and labor costs associated with thetransitioning of the data traffic from one multiplexer to another, andpossibly higher operating costs in servicing that particular trafficwhen employing the retained multiplexer. More specifically, the movementof a single data channel from one multiplexer to another may costseveral hundred dollars, and mileage costs for each channel carriedthrough the communication network may run several dollars per mile.

It is with these observations in mind, among others, that aspects of thepresent disclosure were conceived.

SUMMARY

Aspects of the present disclosure involve systems and methods foroptimizing the grooming of communication network multiplexers. In onemethod an optimization value associated with each of a plurality ofmultiplexer configurations may be determined, wherein each of theplurality of multiplexer configurations includes a proposed assignmentof each of a plurality of data channels to one of a plurality of inputsof a plurality of multiplexers. A multiplexer configuration having ahighest-ranked optimization value of the plurality of multiplexerconfigurations may be identified and subsequently used to configure themultiplexers. Other potential aspects of the present disclosure aredescribed in greater detail below.

BRIEF DESCRIPTION OF THE DRAWINGS

Exemplary embodiments are illustrated in referenced figures of thedrawings. It is intended that the embodiments and figures disclosedherein are to be considered illustrative rather than limiting. The useof the same reference numerals in different drawings indicates similaror identical items.

FIG. 1 is a block diagram of an example communication network employinga plurality of multiplexers within service delivery points to couplecustomer sites to a wide area network;

FIG. 2 is a block diagram of an example multiplexer of the communicationnetwork of FIG. 1;

FIG. 3 is a block diagram of an example system for optimized grooming ofthe multiplexers of FIG. 1;

FIG. 4 is a flow diagram of an example method of optimizing the groomingof multiplexers based on a current multiplexer configuration;

FIG. 5 is a flow diagram of an example workflow for optimizing thegrooming of multiplexers based on a current multiplexer configuration;

FIG. 6 is a flow diagram of an example method of subdividing a group ofservice delivery points prior to optimization of the grooming of themultiplexers;

FIG. 7 is a graphical representation of a group of service deliverypoints combined as a hierarchical clustering and subdivided intomultiple subgroups according to the method of FIG. 6;

FIG. 8 is a flow diagram of an example method of a combined simulationand optimization of multiplexer grooming over a number of time periods;

FIG. 9 is a set of tables depicting the combined simulation andoptimization of the grooming of three multiplexers according to themethod of FIG. 8; and

FIG. 10 is a block diagram illustrating an example of a computing systemwhich may be used in implementing embodiments of the present disclosure.

DETAILED DESCRIPTION

In at least some embodiments described below, a system for optimizedgrooming of multiplexers may employ a current configuration of a groupof multiplexers to determine an optimization value associated with eachof a plurality of multiplexer configurations. The multiplexerconfiguration having the highest-ranked optimization value may then beidentified and subsequently employed to configure the group ofmultiplexers. The highest-ranked optimization value may be the highestor lowest value associated with a particular characteristic or aspect ofvalue, such as, for example, a lowest overall cost or a highestutilization percentage associated with the configured multiplexers,depending on what is most desirable for efficient operation of themultiplexers. In other examples, the configuration of other assets oraspects of a communication network, such as particular types ofcommunication equipment (configuration of hubs, routers, and so on) orhuman resources (assignment of technicians to particular tasks) may beoptimized in a similar manner. These and other potential advantages willbe recognized from the discussion set out herein.

FIG. 1 is a block diagram of an example communication network 100including a communication network gateway 102 coupling multiple servicedelivery points (SDPs) 110 to a wide area network (WAN), backbonenetwork, or other communication network or portion thereof. In theexamples described herein, an SDP is a geographical location at whichone or more multiplexers (MUXes) 120 are employed for multiplexingcommunication network data traffic, possibly including, but not limitedto, voice traffic and data traffic, from multiple customer sites 130onto a single data channel or connection. Consequently, the term“service delivery point” or “SDP,” as employed herein, may not be aservice delivery point as that term is employed in other contexts, suchas, for example, in the Intelligent Network (IN) telephone system, whichis supported by the Signaling System 7 (SS7) protocol.

In some examples, one or more customer sites 130 communicating via thecommunication network 100 may each include a local area network (LAN)and associated computing systems, communication devices, and so on thattransmit data to an input of its corresponding multiplexer 102. Inaddition, one or more customer sites 130 may employ amodulator/demodulator (modem), gateway, or other device to translatecommunication signals generated at the customer site 130 into signalsconforming to the particular protocol of the communication network 100.

Generally, each multiplexer 120 may receive the data of each datachannel over a separate, relatively low bandwidth connection 104 andmultiplex the data from the channels onto a single higher bandwidthconnection 106. The communication network 100 may also include switches,routers, and other components not specifically mentioned herein. Whilevarious embodiments are discussed below in reference to thecommunication network 100, other communication networks may benefit fromapplication of the concepts described herein in other embodiments.

FIG. 2 is a block diagram of an example multiplexer 120 of thecommunication network 100 of FIG. 1. The multiplexer 120 may include aplurality of inputs 222, each of which may be coupled to one of thecustomer sites 130 of FIG. 1 and may receive data over an input datachannel associated with that customer site 130. Multiplexing circuitry226 of the multiplexer 120 may then multiplex the received data from theinput data channels onto a single output data channel for transmissionvia an output 224 to the communication network gateway 102 of FIG. 1.The particular multiplexing circuitry 226 may multiplex data from theincoming data channels using any of a number of available technologiesthat may be compatible with the communication gateway 102, such as, forexample, time-division multiplexing (TDM) and frequency-divisionmultiplexing (FDM). In some examples, at least one of the multiplexers120 may also operate as a demultiplexer such that the multiplexer 120may receive data over a single input data channel via the output 224(operating as in input/output) and demultiplex that data usingdemultiplexing circuitry (not shown in FIG. 2) onto multiple output datachannels, with the data of each output data channel being transmittedvia a corresponding input 222 (also operating as an input/output) to thecustomer site 130 that is to receive that data. The various embodimentsdiscussed below may be applied to the grooming of multiplexers,demultiplexers, and/or combined multiplexers/demultiplexers. However, tosimplify the following discussion, only multiplexing is referencedbelow.

In one example, each input 222 of a multiplexer 120 may be configured toreceive data via a Digital Signal 1 (DS1) carrier or channel oftenemployed to transmit voice and other data between communication devices.The multiplexing circuitry 226 of the multiplexer 120 may multiplex thedata from multiple DS1 channels onto a single Digital Signal 3 (DS3)carrier or channel for transmission via the output 224. A DS3 channelmay possess the bandwidth or throughput of 28 DS1 channels, so themultiplexer 120 at least theoretically may be configured to receive dataover 28 separate DS1 channels via the inputs 222 and multiplex that dataonto a single DS3 channel for transmission via the output 224. In otherexamples in which the multiplexing of the incoming data channels is atleast slightly less than optimal, the multiplexer 120 may be capable ofmultiplexing something less than 28 separate DS1 channels onto a DS3channel.

In another example, each input 222 of a multiplexer 120 may beconfigured to receive data via a DS1 or DS3 channel, and themultiplexing circuitry 226 of the multiplexer 120 may multiplex the datafrom multiple DS1 or DS3 channels onto a single Optical Channel 3 (OC3)carrier or channel for transmission via the output 224. An OC3 channelmay possess the bandwidth or throughput of three DS3 channels or 84 DS1channels, so the multiplexer 120 may be configured to receive data overcomparable numbers of separate DS1 or DS3 channels via the inputs 222and multiplex that data onto a single OC3 channel for transmission viathe output 224. Other examples of various types of input and output datachannels may be employed in other embodiments of the multiplexer 120.

FIG. 3 is a block diagram of an example grooming optimization system 300for optimized grooming of multiplexers, such as the multiplexers 120 ofFIG. 1. The grooming optimization system 300 may include a multiplexerconfiguration access module 302, a multiplexer configuration database304, an optimizer 306, an optimizer input/output translator 308,optimization criteria 310, optimization constraints 312, a servicedelivery point clustering module 314, a discrete event simulation module316, and a network visualization module 318. In various examples, eachof these modules 302-318 may be implemented via hardware, software orfirmware executed by a hardware processor, or some combination thereof.Further, some embodiments of the grooming optimization system 300 mayinclude more or fewer than the specific modules 302-318 describedherein. Moreover, while the various modules of the grooming optimizationsystem 300 are described in conjunction with grooming of themultiplexers 120 of FIG. 1, the grooming optimization system 300 may beconfigured to optimize other example networks employing multiplexers andother network components.

The multiplexer configuration access module 302 may be configured toaccess information describing a current configuration of the multiplemultiplexers 120 stored in the multiplexer configuration database 304.For example, the multiplexer configuration information may include thecurrent assignment of particular data channels associated with specificcustomer sites 130 to particular inputs 222 of each multiplexer 120. Insome embodiments, the multiplexer configuration information may furtherindicate, for example, the particular service delivery point 110 atwhich each multiplexer 120 is located, the data throughput of each input122 and each output 124, and/or other information. In some examplesdescribed more fully below, the multiplexer configuration access module302 may also access multiple possible, proposed, and/or simulatedmultiplexer configurations maintained to optimize future multiplexerconfigurations, which may be stored in the multiplexer configurationdatabase 304. Other information related to the multiplexerconfigurations may also be employed in other examples.

The optimizer 306 may be configured to receive the accessed multiplexerconfiguration information and determine an optimized multiplexerconfiguration based on some optimization value, such as overall cost,utilization percentage, and/or the like. As discussed in greater detailbelow in conjunction with FIG. 5, the optimizer 306 may employ aninteger programming solver to perform the grooming optimization,although other types of optimizers 306 may be employed in otherembodiments. To perform the optimization, the optimizer 306 may receiveone or more optimization criteria 310, possibly along with one or moreoptimization constraints 312, in addition to the current multiplexerconfiguration, to identify an optimized multiplexer configuration. Insome examples, the optimization criteria 310 and optimizationconstraints 312 may be stored in the multiplexer configuration database304 or other data storage.

Depending on the nature or identity of the particular optimizer 306utilized, an optimizer input/output translator 308 may be configured totranslate any of the current multiplexer configuration information, theoptimization criteria 310, the optimization constraints 312, and/orother information that may be received as input by the optimizer 306 toplace that information in a form that is usable by the optimizer 306.Correspondingly, the optimizer input/output translator 308 may translateany output from the optimizer 306, such as one or more optimizedmultiplexer configurations and/or related information, for use byanother module or a user.

A particular example of the optimizer 306 and the optimizer input/outputtranslator 308, along with example optimization criteria 310 andoptimization constraints 312, are discussed in conjunction with FIGS. 4and 5.

The service delivery point (SDP) clustering module 314 may be configuredto group one or more SDPs 110 into one or more distinct or separategroups, the multiplexers 120 of which may be groomed as a groupaccording to the operation of the optimizer 306. This clustering, insome examples, may be performed geographically such that SDPs 110 thatare closer to each other geographically are more likely to be placed inthe same group compared to SDPs 110 that are more distant from eachother, thus potentially rendering optimization of the grooming of theincluded multiplexers 120 more productive. Further, the size of the eachof the formed groups of SDPs 110 may be limited according topredetermined criteria to expedite the optimization of that group. Anexample of the SDP clustering module 314 and its operation is discussedbelow in connection with FIGS. 6 and 7.

The discrete event simulation module 316 may be configured to simulatefuture changes in the data channels being serviced by the multiplexers120 (e.g., data channels added or dropped) for each of a series of timeperiods into the future, possibly beginning with the current timeperiod. For each such time period, the discrete event simulation module316 may then employ the optimizer to identify an optimized multiplexerconfiguration for the next time period given the optimized configurationfor the current time period and the simulated changes in the datachannels during the current time period. In some examples, the discreteevent simulation module 316 may perform such a simulation over theseries of time periods multiple times, and combine the results of eachsimulation to generate an expected identified multiplexer configurationfor each time period of the series.

The network visualization module 318 may be configured to generateoutput, such as the current multiplexer configuration, an optimizedmultiplexer configuration, and/or a display comparing and contrastingdifferences therebetween, for human consumption. In one example, theconfiguration information, which may include information on theparticular SDPs 110 and multiplexers 120 employed, and their connectionsto the various data channels being carried, may be expressed in KeyholeMarkup Language (KML), which is an XML-based format that may be employedto express geographic annotation and visualization withintwo-dimensional Earth maps (e.g., Google Maps™) and three-dimensionalEarth browsers (e.g., Google Earth™).

FIG. 4 is a flow diagram of an example method 400 of optimizing thegrooming of the multiplexers 120 based on a current multiplexerconfiguration. In the following description, the method 400 is presumedto be performed by grooming optimization system 300 of FIG. 3. However,other systems or devices not specifically described herein may performthe method 400 in other embodiments.

In the method 400, the multiplexer configuration access module 302 mayaccess a current multiplexer configuration for a plurality ofmultiplexers 120 (operation 402) via the multiplexer configurationdatabase 304. Based on that information, the optimizer 306 may determinean optimization value for each of a plurality of possible multiplexerconfigurations (operation 404), and identify a particular multiplexerconfiguration having the highest-ranked optimization value (e.g., lowestcost, highest multiplexer utilization, or the like) (operation 406). Insome examples, such as those described below, the optimizer 306 may notdetermine the optimization value for all possible multiplexerconfigurations to expedite the optimization process. Further, theoptimizer 306 may determine the optimization values using theoptimization criteria 310, and may determine the plurality of possiblemultiplexer configurations based at least in part on the optimizationconstraints 312.

While the operations 402-406 are depicted as operations performed in aparticular sequence, the operations 402-406 of FIG. 4, as well as theoperations of other methods described herein, may be performed in otherorders of execution, including in a parallel, overlapping, or concurrentmanner. For example, the operations 202-206 of FIG. 2 may be performedrepeatedly or repetitively for each of a number of time periods, ormultiple times for a particular time period, as mentioned above.

FIG. 5 is a flow diagram of an example workflow 500 for optimizing thegrooming of multiplexers 120 based on a current multiplexerconfiguration. As illustrated in the particular workflow 500, theoptimization is performed using an integer programming solver 510, whichmay serve as an example of the optimizer 306 of FIG. 3. In one example,the integer programming solver 510 may be a commercially-availablesolver, such as, for example, the mixed-integer programming (MIP)portions of the Gurobi® Optimizer by Gurobi Optimization, Inc., or theIBM® ILOG® CPLEX® Optimization Studio by IBM Corporation. Other types ofinteger programming solvers, including open source solvers, may beemployed in other examples.

In an embodiment, the integer programming solver 510 may receive acurrent multiplexer configuration 502, an objective function 504, andone or more multiplexer configuration constraints 506. The currentmultiplexer configuration 502 may indicate a current assignment of eachof a plurality of data channels to one of a plurality of inputs 222 of aplurality of multiplexers 120 of a communication network 100. Each ofthe plurality of data channels may also be associated with other values,such as, for example, a distance or mileage over which the data channelmay be carried from the customer site 130 to the multiplexer 120 of aparticular SDP 110, which may be associated with a particular cost; anycost associated with moving a data channel from one multiplexer 120 toanother, or from one SDP 110 to another; an operating expense associatedwith the use of the multiplexer 120 for that data channel; any earlytermination liability (ETL) costs for disconnecting all remaining datachannels from a particular multiplexer 120; and so on. Also possiblyprovided with the current multiplexer configuration information 502 maybe an identification of data channels that are not currently beingserviced, but are to be added to a multiplexer 120, and any expectedcost or operating expense information associated therewith, as well asan indication of any data channels currently being service that are tobe dropped or removed from the communication network 100. Moreover, anysimilar cost and expense information, as well as operationalinformation, associated with one or more multiplexers 120 not currentlycarrying data channels in the communication network 100 may be providedto the integer programming solver 510.

The objective function 504 may be a function calculated by the integerprogramming solver 510 for each of a number of possible multiplexerconfigurations to generate the optimization value for each of thoseconfigurations, thus serving as at least one of the optimizationcriteria 310 to optimize the grooming of the multiplexers 120. Forexample, presuming that the configuration of the multiplexers 120 is tobe optimized to produce the lowest overall cost, the objective function504 may be a cost function as follows:

${{Cost}\mspace{14mu}{Function}} = {{\sum\limits_{j}{d_{j}z_{j}}} + {\sum\limits_{j}{e_{j}\left( {1 - z_{j}} \right)}} + {\sum\limits_{i,j}{c_{i,j}x_{i,j}}}}$

Each of the variables employed in the objective function may be definedas follows:

i:  Currently  Provided  Data  Channel  Numberj:  Currently  Connected  Multiplexer  Number$x_{i,j}\left\{ {\begin{matrix}{1,} & {{Assign}\mspace{14mu}{Data}\mspace{14mu}{Channel}\mspace{14mu} i\mspace{14mu}{to}\mspace{14mu}{Multiplexer}\mspace{14mu} j} \\{0,} & {Otherwise}\end{matrix}z_{j}\left\{ {\begin{matrix}{1,} & {{Keep}\mspace{14mu}{Multiplexer}\mspace{14mu} j} \\{0,} & {{Disconnect}\mspace{14mu}{Multiplexer}\mspace{14mu} j}\end{matrix}c_{i,j}\text{:}\mspace{14mu}{Cost}\mspace{14mu}{to}\mspace{14mu}{put}\mspace{14mu}{Data}\mspace{14mu}{Channel}\mspace{14mu} i\mspace{14mu}{at}\mspace{14mu}{Multiplexer}\mspace{14mu} j\mspace{14mu}\left( {{{Operating}\mspace{14mu}{Expense}},{{{Mileage}\mspace{14mu}{Cost}}...}} \right)d_{j}\text{:}\mspace{14mu}{Cost}\mspace{14mu}{to}\mspace{14mu}{keep}\mspace{14mu}{Multiplexer}\mspace{14mu} j\mspace{14mu}\left( {{e.g.},{{charges}\mspace{14mu}{for}\mspace{14mu} 12\mspace{14mu}{months}}} \right)e_{j}\text{:}\mspace{14mu}{Cost}\mspace{14mu}{to}\mspace{14mu}{disconnect}\mspace{14mu}{Multiplexer}\mspace{14mu} j\mspace{14mu}\left( {{e.g.},{ETL}} \right)} \right.} \right.$

More specifically, each data channel to be carried by a multiplexer 120may be assigned a unique data channel number i, while every multiplexer110 that is currently connected to at least one data channel may beassigned a multiplexer number j. Employing these data channel andmultiplexer numbers, a first two-dimensional array of binary elementsx_(i,j) may indicate the particular multiplexer 120 to which each datachannel is to be connected for a proposed multiplexer configuration,where a “1” for x_(i,j) indicates that data channel i is to be connectedto multiplexer j, and where a “0” for x_(i,j) indicates that datachannel i is not to be connected to multiplexer j. In addition, providedas input to the objective function 504 may be a second two-dimensionalarray of elements c_(i,j), with each element indicating the cost toplace a data channel i on multiplexer j. Such costs may includeoperating expenses, mileage costs, labor and material costs, and othercosts associated with that data channel assignment.

Also in this example, three one-dimensional arrays in which each elementis associated with a particular multiplexer j may be utilized as inputto the integer programming solver 510. A first one-dimensional array mayinclude binary elements z_(j), each of which may indicate whether acorresponding multiplexer j is to be connected to any of the datachannels (indicated by a “1”), or if it will be disconnected completely(indicated by a “0”). A second one-dimensional array of elements d_(j)may specify a cost to lease or otherwise use each multiplexer j, and athird one-dimensional array of elements e_(j) may specify the cost todisconnect each multiplexer j, (e.g., the early termination liability(ETL) mentioned above). These costs may be considered additionaloptimization criteria 310 or additional aspects of the currentmultiplexer configuration 502.

In one example, the binary elements x_(i,j) and the binary elementsz_(j) may initially indicate the current multiplexer configuration 502,as mentioned above. The integer programming solver 510 may then usethese same binary elements, or copies thereof, as variables to specifyone or more possible multiplexer configurations for determining theparticular cost associated with each configuration, and ultimately theparticular optimized multiplexer configuration 514 reflecting theminimum monetary cost.

In addition, one or more multiplexer configuration constraints 506 maybe provided to the integer programming solver 510, thus disallowingcertain multiplexer configurations from consideration. In this example,two example sets of constraints may be imposed, given that I is thetotal number of data channels i to be connected and J is the totalnumber of multiplexers j currently connected:

${{\sum\limits_{j}x_{i,j}} = 1},{\forall{i \in \left\{ {1,2,{\ldots\mspace{14mu} I}} \right\}}}$${{\sum\limits_{i}x_{i,j}} \leq {k_{j}z_{j}}},{\forall{j \in \left\{ {1,2,{\ldots\mspace{14mu} J}} \right\}}}$

The first set of multiplexer configuration constraints 506 indicatesthat each data channel i is to be connected to exactly one multiplexerj, and the second set of constraints 506 indicates that each multiplexerj that is to remain connected (e.g., z_(j)=1) cannot carry more thandata channels i (depending on the design of the multiplexer j beingemployed), and each multiplexer j that is to be disconnected (e.g.,z_(j)=0) cannot carry any data channels i. Other multiplexerconfiguration constraints 506 may be employed as well, such as, forexample, movement of data channels i to multiplexers j at certain typesof SDPs 110 (e.g., terminal SDPs 110, which are not capable of carryingtraffic from an arbitrary customer site 130 to the communication networkgateway 102), splitting two related data channels i (e.g., data channelsi of the same trunk group) to different multiplexers j, or moving a datachannel i to a multiplexer j of a different local access and transportarea (LATA).

Each of these arrays, criteria, constraints, and so on may be providedto the integer programming solver 510 as input, along with the objectivefunction 504, to identify an optimized multiplexer configuration 514exhibiting the lowest monetary cost. In other embodiments, the arrays,criteria, constraints, and the like may be provided to the integerprogramming solver 510, along with another objective function 504, toidentify an optimized multiplexer configuration 514 according to someother attribute or characteristic, such as a highest multiplexerutilization. To provide this information to the integer programmingsolver 510, an integer programming solver input translator 508 maytranslate the original form of this information, which may exist in aspreadsheet or other format, into the format of the arrays, matrices,variables, and/or other data items described above, or in another formatrequired by the integer programming solver 510 as input. Similarly, aninteger programming solver output translator 512 may translate theresulting optimized multiplexer configuration 514 from one or morearrays or matrices describing the connections of the data channels i tothe multiplexers j, and the connection status of each multiplexer j,into another format, such as a spreadsheet, text document, or otherinformation format, that is usable by humans or machines.

Given the current multiplexer configuration 502, objective function 504,multiplexer configuration constraints 506, as well as the cost and otherinformation described above, the integer programming solver 510 maycalculate an overall cost for each of a number of possible multiplexerconfigurations, wherein a particular possible multiplexer configurationmay be indicated by a particular set of binary values for the x_(i,j)elements. For example, based on the x_(i,j) elements for a possiblemultiplexer configuration, the integer programming solver 510 maydetermine which, if any, of the multiplexers j are to be disconnectedaccording to the possible configuration and update the z_(j) elementsaccordingly, as a disconnected multiplexer j will be associated with a“0” for z_(j), and be associated with a “1” otherwise. The x_(i,j)elements and the z_(j) elements for this particular multiplexerconfiguration may be utilized in the objective function 504, along withthe c_(i,j), d_(j), and e_(j) elements that describe various costparameters, to determine an overall monetary cost for the particularconfiguration. More specifically, the first term of the objective costfunction is the sum of the charges to utilize each multiplexer j toremain connected (e.g., z_(j)=1). The second cost term is the sum of thetermination-related charges for each multiplexer j to be disconnected(e.g., z_(j)=0, so (1−z_(j))=0). The third term of the objectivefunction 504 sums up the operating expenses and other costs c_(i,j) ofcarrying each data channel i using the particular multiplexer j to whichit is to be connected (e.g., when x_(i,j)=1).

Based on these calculations for each possible multiplexer configurationprocessed, the integer programming solver 510 may identify an optimizedmultiplexer configuration 514 exhibiting a lowest overall cost. Thenetwork service provider or operator may then employ the optimizedmultiplexer configuration 514 as a new multiplexer configuration 514, ormay simply take the proposed configuration under advisement in view ofother information that may affect the ultimate multiplexer configurationto be utilized.

The integer programming solver 510 may be configured with logic capableof ignoring at least some possible multiplexer configurations notprohibited by the multiplexer configuration constraints 506 that cannotresult in the lowest cost by employing one or more computationalstrategies. For example, the integer programming solver 510 may ignorethose configurations that can only result in a higher cost than that ofone or more configurations already processed. Also, the integerprogramming solver 510 may save intermediate calculations from theprocessing of some configurations that may be applied to otherconfigurations, thus potentially arriving at an ultimate solution morequickly.

Even when employing such strategies, however, the relative size of theproblem may increase at least geometrically with linear increases in thenumber of data channels i and the number of multiplexers j, thuspotentially causing extremely lengthy solution times for the integerprogramming solver 510 to determine an optimized multiplexerconfiguration 514. For example, in this particular scenario, a totalnumber J of multiplexers j equal to 1000, and a total number I of 15,000data channels i being carried, may result in approximately 15,001,000decision variables being employed in the total cost objective function504 referenced above due to the objective function 504 including a firstterm including a number of sub-terms equal to the product of I and J anda second and third term that collectively include a total number ofsub-terms equal to J. Further, the total number of multiplexerconfiguration constraints 506, as discussed above for this particularexample, may be the sum of I (e.g., the 15,000 total data channels ifrom the first constraint set) and J (e.g., the 1000 total multiplexersj from the second constraint set), resulting in 16,000 total multiplexerconfiguration constraints 506 in this example. Therefore, multiplyingthe total number of decision variables by the total number ofmultiplexer configuration constraints 506 may result in a total of240,016,000,000 elements in one or more matrices to be processed by theinteger programming solver 510 to determine an optimized multiplexerconfiguration 514.

Consequently, to reduce the size of the problem in some examples, thegrooming optimization system 300 may be configured to partition thecomplete group of SDPs 110 into two or more subgroups, each with its ownset of data channels i to carry, thus decomposing the overall probleminto two or more separate, but smaller, problems. In one example, theSDPs 110 may be grouped according to the particular LATAs they service.However, even if such grouping is performed, the resulting SDP groupsmay be further subdivided into yet smaller groups to reduce further theoverall amount of time required to provide optimized multiplexerconfigurations 514. FIG. 6 is a flow diagram of an example method 600that may be employed by the SDP clustering module 314 of the groomingoptimization system 300 of FIG. 3 to subdivide a group of SDPs 110 priorto optimization of the grooming of the multiplexers 120.

In the method 600, each individual SDP 110 may be identified as aseparate SDP cluster (operation 602). In other words, each SDP clustermay initially include a single, unique one of the SDPs 110. The twoclosest SDP clusters in terms of geographical distance, taking allcurrent SDP clusters into account, may then be combined as a singlecluster (operation 604). For example, the geographical distance betweentwo SDP clusters that each include a single SDP 110 may simply be ageographical distance between the physical locations of the two SDPs110. In some examples, as each new SDP cluster is created by combiningtwo previous clusters, a new value for a physical location of the newSDP cluster may be determined, such by determining or calculating anaverage physical location of all of the SDPs 110 in that cluster. Thiscombining operation 604 may be performed iteratively, one SDP clustercombination at a time, until all SDPs are combined to create a singlehierarchical clustering of SDPs 110. In some embodiments, each of theSDPs 110 may be first grouped according to LATA prior to thehierarchical clustering of operations 602-604. In one example, the“hclust” method of the “R” software environment may be employed toperform the initial clustering or combining operation, such as by way ofWard's method, in one embodiment.

Based on the single hierarchical clustering, multiple subgroups of SDPs110 may be identified (operation 606). To generate the multiplesubgroups, in one example, the single hierarchical clustering of SDPs110 may be analyzed as a subgroup to determine whether the subgroup istoo large to be processed (operation 608). This determination may bemade by comparing the number of elements of a particular matrix to beemployed in the integer programming solver 510, the number of variablesassociated with the objective function 504, or some other valueassociated with the subgroup, to a predetermined threshold. If anycurrent subgroup is determined to be too large to process (operation608), those subgroups may be divided into two subgroups according to thehierarchical clustering provided by operation 604 (operation 610). Ifany of the resulting subgroups are still too large (operation 608), theprocess of operations 610 and 608 may then be repeated on thosesubgroups. Once all subgroups are small enough to be processed, theconfiguration of the multiplexers 120 in each of the subgroups of SDPs110 may be optimized independently (operation 612), as described herein.In some embodiments, the “snow” (Simple Network of Workstations) packageof the “R” computing environment may be utilized to perform theoptimization on the different SDP 110 subgroups in parallel.

FIG. 7 is a graphical representation of a group of SDPs 110 combined asa hierarchical clustering 700 and subdivided into multiple subgroups701, 702, and 703 according to the method 600 of FIG. 6. While threesubgroups 701, 702, and 703 are depicted in FIG. 7, any number of SDP110 subgroups may be identified in other examples. In one embodiment,the size of each subgroup may be limited by the number of SDPs 110 inthe subgroup, or according to some other parameter associated with theSDPs 110. For example, the size of the subgroup may be limited accordingto a predetermined threshold (e.g., 50,000) of the number of decisionvariables associated with the objective function 504 (e.g., the productof the number of data channels and the number of multiplexers 120,summed with the number of multiplexers 120, as described above). Inother examples, the size of each SDP 110 subgroup may be limited by athreshold of the total number of elements in the one or more matrices tobe processed by the integer programming solver 510, as described above.

Based on such limits, two or more subgroups 701, 702, and 703 may thenbe identified based on the hierarchical clustering 700. In one example,the single hierarchical clustering 700 may be employed as a startingpoint. If the overall SDP cluster is too large to process according tosome predetermined size limit, the overall SDP cluster may be separatedinto its two constituent clusters according to the hierarchicalclustering. As shown in the specific example of FIG. 7, the twoconstituent clusters would be one cluster include subgroup 701 andanother cluster including both subgroups 702 and 703. Presuming subgroup701 is small enough to process, the configuration of the multiplexers120 of SDP subgroup 701 may then be optimized using the integerprogramming solver 510, as discussed above. Presuming also that the sizeof the cluster including subgroups 702 and 703 still exceeds somepredetermined threshold, that cluster may then be subdivided into itstwo separate clusters (e.g., subgroup 702 and 703). Presuming then thatthe sizes of both subgroup 702 and subgroup 703 are below thepredetermined threshold, the multiplexers 120 of each of the subgroups702 and 703 may be optimized independently as well. In other examples,further subdivisions may be necessary, resulting in the integerprogramming solver 510 processing multiple subgroups of SDPs 110independently. In some examples, the resulting geographical footprint ofeach SDP 110 subgroup may be inversely related to its proximity to anurban area, as subgroups located in urban areas will tend to reflectdense SDP 110 distributions, and thus be smaller in area, whereassubgroups in rural areas will tend to correspond with sparse SDP 110distributions, and thus be larger in area.

In addition to identifying an optimized multiplexer configuration 514for one or more groups of multiplexers 120 based on a currentmultiplexer configuration 502, the integer programming solver 510 maydetermine one or more optimized multiplexer configurations 514 for eachtime period of a series of time periods projected into the future underthe control of the discrete event simulation module 316 of FIG. 3. Tothat end, FIG. 8 is a flow diagram of an example method 800 of combinedsimulation and optimization of multiplexer grooming over a series oftime periods. In the method 800, the entire group or collection of SDPs110 containing the multiplexers 120 to be configured may be partitionedinto subgroups (operation 801), such as by using hierarchicalclustering, as discussed above in connection with the method 600 of FIG.6. For each of the subgroups, an optimized multiplexer configuration 514may be generated based at least in part on a current multiplexerconfiguration 502 (operation 802), as discussed above in conjunctionwith FIG. 5. Further, a new multiplexer configuration may be implementedbased on the optimized multiplexer configuration 514 (operation 804).For example, the multiplexers 120 may be configured using the optimizedmultiplexer configuration 514 either in whole or in part.

In some examples, implementing at least a portion of a new multiplexerconfiguration may require some significant amount of time, such as anumber of weeks or months. For example, removing a multiplexer 120 fromcarrying any data channels may require several weeks or months to planand execute, including coordination of the change with the customer site130. However, data channels generally cannot be added to a multiplexer120 that is scheduled to be removed, so some aspects of a new optimizedmultiplexer configuration may more immediately affect the currentlyimplemented configuration even if the actually removal of themultiplexer 120 requires some significant period of time.

To simulate or project future optimizing of the multiplexerconfiguration, the discrete event simulation module 316 may store thenew or optimized multiplexer configuration 514 as a virtual multiplexerconfiguration (operation 806) to apply to a simulation to be executedover a series of time periods, such as, for example, a number of months.To perform that simulation, the discrete event simulation module 316 mayadvance a time reference to proceed to the next time period (e.g., thenext month) (operation 808). In some examples, the time period chosenmay correspond to the frequency at which the network service provider oroperator may employ the grooming optimization system 300 to generate anoptimized multiplexer configuration 514 for deployment on themultiplexers 120. Any data channel changes, such as the dropping of oneor more data channels from the communication network 100 by one or morecustomer sites 130, and/or the addition of one or more data channels tothe communication network 100 due to sales of communication service toone or more customer sites 130, may then be simulated (operation 810).In some examples, the simulation of dropped or added data channels maybe based on some expected percentage to be applied during the timeperiod (e.g., the next month). For example, the discrete eventsimulation module 316 may be configured to presume an annual drop or“churn” rate of data channels of about 10 percent, and an annual add or“sales” rate of 5 percent. In some examples, different types of datachannels (such as voice channels versus computer data channels, or datachannels associated with different geographical areas) may exhibitdifferent types of churn and sales rates. In addition, the discreteevent simulation module 316 may be configured to select which datachannels are to be dropped, as well as a geographical location for apresumed customer site 130 for data channels that are to be added. Suchselections may be made at random, or may be based on some historicaldata informing the simulation where such channel churns or sales aremore likely to occur.

Prior to generating an optimized multiplexer configuration 514 involvingthe multiplexers 120, the entire group of SDPs 110 containing themultiplexers 120 may be repartitioned into subgroups (operation 811)such as by using hierarchical clustering, as noted above. For each ofthe subgroups, based on the simulated channel changes, the discreteevent simulation module 316 may employ the optimizer 306, including theinteger programming solver 510, to generate an optimized multiplexerconfiguration 514 (operation 812) for the current time period based onthe simulated data channel changes and the virtual multiplexerconfiguration. The discrete event simulation module 316 may then storethe optimized multiplexer configuration as the virtual multiplexerconfiguration (operation 814) and determine if the current time periodis the last time period to be simulated (operation 816). In one specificexample, the last time period may be the sixtieth month, thus providingan overall simulation time of five years. If, instead, the current timeperiod is not the last time period to be simulated, the discrete eventsimulation module 316 may then proceed to the next time period(operation 808), simulate new data channel changes for that time period(operation 810), and generate a new optimized multiplexer configuration514 for that time period based on the latest simulated data channelchanges and the latest virtual multiplexer configuration (operation812). Accordingly, modifications to the configuration of the variousmultiplexers may be projected over some timeframe, possibly providingnetwork systems providers or operators some indication of configurationchanges to be expected to the communication network 100 over that time.

In some embodiments, the discrete event simulation module 316 mayperform a complete simulation involving operations 804 through 816 overthe entire simulation period (e.g., five years) multiple times, such as,for examples, 100 times or 1000 times. In such cases, the discrete eventsimulation module 316 may combine or summarize the results of themultiple simulations over that time period to provide a singlesimulation for use by the network system operator or provider.

FIG. 9 is a set of tables 900 depicting the combined simulation andoptimization of the grooming of three multiplexers 210 according to themethod 800 of FIG. 8. While example data for only three multiplexers(labeled “MUX 0,” “MUX 1,” and “MUX 2”) from a single SDP (“SDP 0”) isillustrated, data involving other multiplexers 120 of SDP 0 and of otherSDPs 110 are not depicted to simplify the following discussion. At thebeginning of the first simulation period (Month 1), the data channelscarried by each of the multiplexers MUX 0, MUX 1, and MUX 2 at thebeginning of the month (“Channels BOM”) are 11, 22, and 6, respectively.During that month, no optimizations (in which channels are moved to orfrom the multiplexer 120), sales (additions of data channels), ordisconnects (removals or drops of data channels), are simulated.Consequently, each of the multiplexers 120 ends the month with the samenumber of data channels (“Channels EOM”) with which it began. The sameis true of the simulation of the second month (Month 2).

During the next time period of the simulation (Month 3), however, thediscrete event simulation module 316 simulates disconnections of a firstdata channel in MUX 0 and a second data channel in MUX 1 (indicated by−1), thus reducing the number of channels being carried by each of thosemultiplexers 120 by one at the end of the month. Various other sales anddisconnections at the multiplexers 120 are simulated during other monthsas well, with corresponding changes in the number of data channels beingcarried by those multiplexers 120, as denoted in the tables 900.

As a result of the sales and disconnections of the channels in MUX 0,MUX 1, and MUX 2, as well as other multiplexers 120 being simulated atthe same time, one or more optimizations in the grooming of themultiplexers 120 may be made according to the operation of the integerprogramming solver 510. In the example of FIG. 9, a simulated move of adata channel from one multiplexer 120 (not shown in FIG. 9) to MUX 1during Month 8 is depicted at reference numeral 902. In some examples,the decision to move the data channel to MUX 1 may have been indicatedin an optimized multiplexer configuration 514 corresponding to aprevious month in the simulation, as opposed to the current month (Month8), possibly due to any necessary foregoing operations (e.g., manpowerplanning, coordination of the move with the customer site 130, and soon).

Moreover, during this same simulation, the discrete event simulationmodule 316 has determined via the integer programming solver 510 thatMUX 2 should be disconnected, with the remaining data channels beingcarried thereon to be moved to one or more other multiplexers 120. Themonth during which the data channels are actually moved from MUX 2 isshown to be at Month 12, as indicated at reference numeral 904,resulting in no data channels being carried at MUX 2 thereafter. In someexamples, the disconnection of MUX 2 may have been indicated in anoptimized multiplexer configuration 514 generated in connection with aprevious month, as described above. In this particular example, all ofthe data channels removed from MUX 2 are moved to MUX 0 of the same SDP(SDP 0), as indicated at reference numeral 906.

FIG. 10 is a block diagram illustrating an example of a computing deviceor computer system 1000 which may be used to implement the embodimentsdisclosed above, such as the grooming optimization system 300 of FIG. 3.Embodiments disclosed herein include various operations that maybeperformed by hardware modules or components, or hardware modules orcomponents used in combination with software instructions. Moreover, asdescribed herein, in some embodiments, a first module or component maybe hardware that is programmed by one set of software or firmwareinstructions to perform one or more functions, while a second module orcomponent may be that same hardware that is programmed by another set ofsoftware or firmware instructions to perform one or more otherfunctions. As a result, the same hardware may represent the first moduleduring one period of time, and may represent the second module duringthe same time or a second period of time. According to one example, thecomputing device or system 1000 may include at least one processor 1002,at least one system interface 1004, at least one memory 1006, at leastone storage device 1008, and at least one I/O device 1010. The system1000 may further include at least one processor bus 1012 and/or at leastone input/output (I/O) bus 1014.

The processor 1002 may include one or more internal levels of cache (notshown in FIG. 10) and can be any known processor, such as amicroprocessor, microcontroller, digital signal processor, graphicsprocessor, or the like. The processor bus 1012, also possibly known as ahost bus or a front side bus, may be used to couple the processor 1002with the system interface 1004. The system interface 1004 may beconnected to the processor bus 1012 to interface various components ofthe system with the processor 1002. System interface 1004 may, forexample, include a bus controller 1016 or bus interface unit to directinteraction with the processor bus 1012 and a memory controller 1018 forinterfacing the memory 1006 with the processor bus 1012. The systeminterface 1004 may also include an I/O interface 1020 to interface oneor more I/O devices 1010 with the processor 1002.

The memory 1006 may include one or more memory cards and controlcircuits (not depicted in FIG. 10). The memory 1006 may include a mainmemory 1006A and/or a read-only memory (ROM) 1006B. The main memory1006A can be random access memory (RAM) or any other dynamic storagedevice(s) for storing information and instructions to be executed by theprocessor 1002. Main memory 1006A may be used for storing temporaryvariables or other intermediate information during execution ofinstructions by the processor 1002. The read-only memory 1006B can beany static storage device(s), such as Programmable Read Only Memory(PROM) chip for storing static information and instructions for theprocessor.

According to one embodiment, the above methods may be performed by thecomputer system 1000 in response to the processor 1002 executing one ormore sequences of one or more instructions contained in the main memory1006A. These instructions may be read into main memory 1006A fromanother machine-readable medium capable of storing or transmittinginformation in a form (e.g., software, processing application) readableby a machine (e.g., a computer). Execution of the sequences ofinstructions contained in the main memory 1006A may cause the processor1002 to perform the process operations described herein.

A machine-readable media may take the form of, but is not limited to,non-volatile media and volatile media. Non-volatile media may include amass storage device 1008 and volatile media may include dynamic storagedevices. Common forms of machine-readable media may include, but are notlimited to, magnetic storage media (e.g. hard disk drive); opticalstorage media (e.g. Compact Disc Read-Only Memory (CD-ROM) and DigitalVersatile Disc Read-Only Memory (DVD-ROM)), magneto-optical storagemedia; read-only memory (ROM); random access memory (RAM, such as staticRAM (SRAM) and dynamic RAM (DRAM)); erasable programmable memory (e.g.,erasable programmable read-only memory (EPROM) and electrically erasableprogrammable read-only memory (EEPROM)); flash memory; or other types ofmedia suitable for storing computer or processor instructions.

Embodiments disclosed herein include various operations that aredescribed in this specification. As discussed above, the operations maybe performed by hardware components and/or may be embodied inmachine-executable instructions, which may be used to cause ageneral-purpose or special-purpose processor programmed with theinstructions to perform the operations. Alternatively, the operationsmay be performed by a combination of hardware, software, and/orfirmware.

The performance of one or more operations described herein may bedistributed among one or more processors, not only residing within asingle machine, but deployed across a number of machines. In someexamples, the one or more processors or processor-implemented modulesmay be located in a single geographic location (e.g., within a homeenvironment, an office environment, or a server farm). In otherembodiments, the one or more processors or processor-implemented modulesmay be distributed across a number of geographic locations.

As used herein, the term “or” may be construed in either an inclusive orexclusive sense. Moreover, plural instances may be provided forresources, operations, or structures described herein as a singleinstance. Additionally, boundaries between various resources,operations, modules, engines, and data stores may be arbitrary, andparticular operations are illustrated in a context of specificillustrative configurations. In general, structures and functionalitypresented as separate resources in the examples configurations may beimplemented as a combined structure or resource. Similarly, structuresand functionality presented as a single resource may be implemented asseparate resources.

While the present disclosure has been described with reference tovarious embodiments, these embodiments are illustrative, and the scopeof the disclosure is not limited to such embodiments. Variousmodifications and additions can be made to the exemplary embodimentsdiscussed herein without departing from the scope of the disclosure. Forexample, while the embodiments described above refer to particularfeatures, the scope of this disclosure also includes embodiments havingdifferent combinations of features, as well as embodiments that do notinclude all of the described features. Accordingly, the scope of thedisclosure is intended to embrace all such alternatives, modifications,and variations, together with all equivalents thereof.

The invention claimed is:
 1. A method for optimization of communicationnetwork multiplexers, the method comprising: determining, using at leastone hardware processor of a machine, an optimization value associatedwith each of a plurality of multiplexer configurations, wherein each ofthe plurality of multiplexer configurations comprises a proposedassignment of each of a plurality of data channels to one of a pluralityof inputs of a plurality of multiplexers; identifying, from theplurality of multiplexer configurations, a multiplexer configurationhaving a highest-ranked optimization value of the plurality ofmultiplexer configurations; and configuring the plurality ofmultiplexers based on the proposed assignment corresponding to theidentified multiplexer configuration.
 2. The method of claim 1, whereinthe multiplexers are configured to multiplex the plurality of datachannels using time-division multiplexing (TDM).
 3. The method of claim1, wherein the determining of the optimization value associated witheach of the plurality of multiplexer configurations is performed usingan integer programming algorithm.
 4. The method of claim 1, wherein thedetermining of the optimization value associated with each of theplurality of multiplexer configurations comprises instituting at leastone constraint on the proposed assignment of each of the plurality ofdata channels to a corresponding one of the plurality of inputs.
 5. Themethod of claim 1, wherein: the optimization value associated with eachof the plurality of multiplexer configurations comprises a monetary costassociated with each of the plurality of multiplexer configurations; andthe highest-ranked optimization value of the plurality of multiplexerconfigurations comprises a lowest monetary cost associated with theplurality of multiplexer configurations.
 6. The method of claim 1,further comprising: geographically subdividing a group of servicedelivery points of the communication network into multiple subgroups ofservice delivery points, wherein each service delivery point of thegroup of service delivery points comprises one or more multiplexers, andwherein one of the multiple subgroups of service delivery pointscomprises the plurality of multiplexers.
 7. The method of claim 1,wherein: a most recently identified multiplexer configuration comprisesthe identified multiplexer configuration; and the method furthercomprises, for each time period of a series of time periods: revisingthe most recently identified multiplexer configuration based on at leastone simulated change in the plurality of data channels during the timeperiod; determining a next optimization value associated with each of anext plurality of multiplexer configurations based on the revisedmultiplexer configuration; identifying, from the next plurality ofmultiplexer configurations, a next multiplexer configuration having ahighest-ranked next optimization value of the next plurality ofmultiplexer configurations as the most recently identified multiplexerconfiguration; and advancing to a next time period in the series of timeperiods.
 8. A system for optimization of communication networkmultiplexers, the system comprising: at least one hardware processor;and memory comprising instructions that, when executed by the at leastone hardware processor, cause the system to: determine an optimizationvalue associated with each of a plurality of multiplexer configurations,wherein each of the plurality of multiplexer configurations comprises aproposed assignment of each of a plurality of data channels to one of aplurality of inputs of a plurality of multiplexers; identify, from theplurality of multiplexer configurations, a multiplexer configurationhaving a highest-ranked optimization value of the plurality ofmultiplexer configurations; and configure the plurality of multiplexersbased on the proposed assignment corresponding to the identifiedmultiplexer configuration.
 9. The system of claim 8, wherein theinstructions cause the system to determine the optimization valueassociated with each of the plurality of multiplexer configurationsusing an integer programming algorithm.
 10. The system of claim 8,wherein the instructions cause the system to determine the optimizationvalue associated with each of the plurality of multiplexerconfigurations by instituting at least one constraint on the proposedassignment of each of the plurality of data channels to a correspondingone of the plurality of inputs.
 11. The system of claim 10, wherein theat least one constraint on the proposed assignment of each of theplurality of data channels to a corresponding one of the plurality ofinputs comprises: each of the plurality of data channels is assigned toexactly one of the plurality of multiplexers; each of the plurality ofmultiplexers is assigned less than or equal to a predetermined number ofthe plurality of data channels; and a multiplexer to be disconnected isassigned none of the plurality of data channels.
 12. The system of claim10, wherein the at least one constraint on the proposed assignment ofeach of the plurality of data channels to a corresponding one of theplurality of inputs comprises:${{\sum\limits_{i}x_{i,j}} \leq {kz}_{j}},{\forall{j \in \left\{ {1,2,{\ldots\mspace{14mu} J}} \right\}}}$and${{\sum\limits_{j}x_{i,j}} = 1},{\forall{i \in \left\{ {1,2,{\ldots\mspace{14mu} I}} \right\}}}$i is an identifier for a currently provided data channel of theplurality of data channels; j is an identifier for a currently connectedmultiplexer of the plurality of multiplexers; x_(i,j) is one if datachannel i is assigned to multiplexer j, and is zero otherwise; z_(j) iszero if multiplexer j is to be disconnected, and is one otherwise; k_(j)is a number of data channels being carried by multiplexer j; I is atotal number of data channels of the plurality of data channels to beconnected; and J is a total number of multiplexers of the plurality ofmultiplexers currently connected.
 13. The system of claim 8, wherein:the optimization value associated with each of the plurality ofmultiplexer configurations includes a monetary cost associated with eachof the plurality of multiplexer configurations; and the highest-rankedoptimization value of the plurality of multiplexer configurationsincludes a lowest monetary cost associated with the plurality ofmultiplexer configurations.
 14. The system of claim 13, wherein theinstructions cause the system to, for each of the plurality ofmultiplexer configurations: determine a first cost associated with theproposed assignment of each of the plurality of data channels to thecorresponding one of the plurality of inputs under the multiplexerconfiguration; determine a second cost associated with those of theplurality of multiplexers to be used under the multiplexerconfiguration; and determine a third cost associated with those of theplurality of multiplexers to be disconnected under the multiplexerconfiguration; wherein the monetary cost for the multiplexerconfiguration is based on the first cost, the second cost, and the thirdcost.
 15. The system of claim 13, wherein the instructions cause thesystem to determine the monetary cost associated with each of theplurality of multiplexers by calculating, for each of the plurality ofmultiplexer configurations,${\sum\limits_{j}{d_{j}z_{j}}} + {\sum\limits_{j}{e_{j}\left( {1 - z_{j}} \right)}} + {\sum\limits_{i,j}{c_{i,j}x_{i,j}}}$wherein: i is an identifier for a currently provided data channel of theplurality of data channels; j is an identifier for a currently connectedmultiplexer of the plurality of multiplexers; x_(i,j) is one if datachannel i is assigned to multiplexer j, and is zero otherwise; z_(j) iszero if multiplexer j is to be disconnected, and is one otherwise;c_(i,j) is a cost to carry data channel i at multiplexer j; d_(j) is acost to employ multiplexer j for a period of time; and e_(j) is a costto disconnect multiplexer j.
 16. The system of claim 8, wherein theinstructions further cause the system to geographically subdivide agroup of service delivery points of the communication network is intomultiple subgroups of service delivery points, each service deliverypoint of the group of service delivery points including one or moremultiplexers and one of the multiple subgroups of service deliverypoints comprises the plurality of multiplexers, wherein geographicallysubdividing the group of service deliver points includes: identifyingeach service delivery point as a separate cluster; iteratively combiningtwo closest clusters according to geographical distance between clustersuntil all clusters are combined to create a hierarchical clustering ofthe service delivery points; and identifying the multiple subgroups ofservice delivery points based on the hierarchical clustering of theservice delivery points.
 17. The system of claim 8, wherein a mostrecently identified multiplexer configuration includes the identifiedmultiplexer configuration and the instructions further cause the systemto, for each time period of a series of time periods: revise the mostrecently identified multiplexer configuration based on at least onesimulated change in the plurality of data channels during the timeperiod; determine a next optimization value associated with each of anext plurality of multiplexer configurations based on the revisedmultiplexer configuration; identify, from the next plurality ofmultiplexer configurations, a next multiplexer configuration having ahighest-ranked next optimization value of the next plurality ofmultiplexer configurations as the most recently identified multiplexerconfiguration; and advance to a next time period in the series of timeperiods.
 18. The system of claim 17, wherein the at least one simulatedchange in the plurality of data channels during the time period includesat least one of: an addition of at least one data channel to theplurality of data channels based on a simulated percentage of datachannels to be added during the time period, a removal of at least onedata channel from the plurality of data channels based on a simulatedpercentage of data channels to be removed during the time period, aremoval of at least one data channel from the plurality of data channelsselected at random, or an addition of at least one data channel to theplurality of data channels, wherein the at least one data channel isassociated with a geographical area selected at random.
 19. A system foroptimization of communication network multiplexers, the systemcomprising: a plurality of multiplexers comprising a plurality ofinputs; and a computing device communicatively coupled to each of theplurality of multiplexers, the computing device configured to: determinean optimization value associated with each of a plurality of multiplexerconfigurations for the plurality of multiplexers, wherein each of theplurality of multiplexer configurations comprises a proposed assignmentof each of a plurality of data channels to one of the plurality ofinputs; identify, from the plurality of multiplexer configurations, amultiplexer configuration having a highest-ranked optimization value ofthe plurality of multiplexer configurations; and configure the pluralityof multiplexers based on the proposed assignment corresponding to theidentified multiplexer configuration.
 20. The system of claim 19,wherein the computing device is configured to determine the optimizationvalue associated with each of the plurality of multiplexerconfigurations using an integer programming algorithm.